package com.ruoyi.query.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.query.entity.Query;
import com.ruoyi.query.entity.ReturnQuery;

import java.util.List;

/**
 * <p>
 * 动态查询服务类
 * </p>
 *
 * @author XiaShiLong
 * @since 2021-03-25
 */
public interface QueryService extends IService<Query> {

    /**
     * 管理员新增
     *
     * @param query <see>Query</see>
     * @return boolean
     */
    boolean adminSave(Query query);

    /**
     * 管理员删除
     *
     * @param query <see>Query</see>
     * @return boolean
     */
    boolean adminRemove(Query query);

    /**
     * 管理员修改
     *
     * @param query <see>Query</see>
     * @return boolean
     */
    boolean adminUpdate(Query query);

    /**
     * 管理员分页查询
     *
     * @param page  页码
     * @param size  每页数量
     * @param query <see>Query</see>
     * @return Page
     */
    List<Query> pageQuery(int page, int size, Query query);

    /**
     * 用户删除
     *
     * @param query <see>Query</see>
     * @return boolean
     */
    boolean userRemove(Query query);

    /**
     * 获取当前对象查询属性
     *
     * @param clz    要查询的对象
     * @param menuId 菜单id
     * @return <see>ReturnSelect</see>
     */
    ReturnQuery getQuery(Class<?> clz, Long menuId);

    /**
     * 根据菜单id和当前登录用户
     *
     * @param menuId 菜单id
     * @return List
     */
    List<Query> getByMenuIdAndUserId(Long menuId);

    /**
     * 根据菜单id和类型查询
     *
     * @param menuId 菜单id
     * @param type   类型(0系统,1用户)
     * @return List
     */
    List<Query> getByMenuIdAndType(Long menuId, Integer type);
}
